Total participants (NULL = did not pass captchas):
##
## delay normal NULL
## 502 502 182
Participants that passed the captchas and finished the study:
##
## Normal Slowed down
## 500 502
Overall bonus paid out was:
## [1] 4.06
If we split bonus by whether or not participants played, we see that playing leads to a slightly higher payout:
## # A tibble: 2 x 6
## bet_at_all mean_bonus sd_bonus se_bonus max_bonus min_bonus
## * <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 bet 4.08 3.89 0.137 72 0
## 2 no bet 4 0 0 4 4
Our main DV clearly does not look normally distributed.
## # A tibble: 1 x 3
## gamble_at_all gamble_everything proportion_bet_rest
## <dbl> <dbl> <dbl>
## 1 0.808 0.144 0.399
Binomial confidence or credibility intervals for the probability to gamble at all:
## method x n mean lower upper
## 1 agresti-coull 810 1002 0.8083832 0.7828261 0.8315849
## 2 asymptotic 810 1002 0.8083832 0.7840141 0.8327523
## 3 bayes 810 1002 0.8080758 0.7835673 0.8322395
## 4 cloglog 810 1002 0.8083832 0.7826222 0.8314267
## 5 exact 810 1002 0.8083832 0.7826229 0.8323168
## 6 logit 810 1002 0.8083832 0.7828269 0.8315792
## 7 probit 810 1002 0.8083832 0.7830742 0.8317968
## 8 profile 810 1002 0.8083832 0.7832438 0.8319480
## 9 lrt 810 1002 0.8083832 0.7832510 0.8319447
## 10 prop.test 810 1002 0.8083832 0.7823333 0.8320295
## 11 wilson 810 1002 0.8083832 0.7828544 0.8315565
We use a custom parameterization of a zero-one-inflated beta-regression model (see also here). The likelihood of the model is given by:
\[\begin{align} f(y) &= (1 - g) & & \text{if } y = 0 \\ f(y) &= g \times e & & \text{if } y = 1 \\ f(y) &= g \times (1 - e) \times \text{Beta}(a,b) & & \text{if } y \notin \{0, 1\} \\ a &= \mu \times \phi \\ b &= (1-\mu) \times \phi \end{align}\]
Where \(1 - g\) is the zero inflation probability, zipp is \(g\) and reflects the probability to gamble, \(e\) is the conditional one-inflation probability (coi) or conditional probability to gamble everything (i.e., conditional probability to have a value of one, if one gambles), \(\mu\) is the mean of the beta distribution (Intercept), and \(\phi\) is the precision of the beta distribution (phi). As we use Stan for modelling, we need to model on the real line and need appropriate link functions. For \phi the link is log (inverse is exp()), for all other parameters it is logit (inverse is plogis()).
We fit this model and add experimental condition as a factor to the three main model parameters (i.e., only the precision parameter is fixed across conditions). The following table provides the overview of the model and all model parameters and show good convergence.
## Family: zoib2
## Links: mu = logit; phi = log; zipp = logit; coi = logit
## Formula: new_prop ~ exp_cond
## phi ~ 1
## zipp ~ exp_cond
## coi ~ exp_cond
## Data: part2 (Number of observations: 1002)
## Samples: 4 chains, each with iter = 26000; warmup = 1000; thin = 1;
## total post-warmup samples = 1e+05
##
## Population-Level Effects:
## Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## Intercept -0.32 0.05 -0.42 -0.22 1.00 155141 79094
## phi_Intercept 1.28 0.05 1.18 1.37 1.00 157456 81325
## zipp_Intercept 1.42 0.11 1.21 1.65 1.00 150471 75622
## coi_Intercept -1.61 0.13 -1.88 -1.35 1.00 158421 77535
## exp_condSloweddown -0.17 0.07 -0.31 -0.03 1.00 158123 76631
## zipp_exp_condSloweddown 0.03 0.16 -0.28 0.35 1.00 149044 75632
## coi_exp_condSloweddown -0.35 0.20 -0.75 0.04 1.00 153355 77331
##
## Samples were drawn using sampling(NUTS). For each parameter, Bulk_ESS
## and Tail_ESS are effective sample size measures, and Rhat is the potential
## scale reduction factor on split chains (at convergence, Rhat = 1).
As a visual convergence check, we plot the density and trace plots for the four intercept parameters representing the normal speed condition or the overall mean (for phi).
We can also plot the three parameters showing the difference distribution of the slowed down condition from the normal speed condition. These differences are given on the logit scale.
The model does not have any obvious problems, even without priors for the condition specific effects.
As expected the synthetic data generated from the model looks a lot like the actual data. This suggests that the model is adequate for the data.
We first give the table showing the posterior means and 95% CIs.
## # A tibble: 6 x 8
## # Groups: parameter [3]
## parameter condition estimate .lower .upper .width .point .interval
## <fct> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <chr>
## 1 Gamble at all? Normal 0.805 0.770 0.839 0.95 mean qi
## 2 Gamble at all? SlowedDown 0.810 0.775 0.843 0.95 mean qi
## 3 Gamble everything? Normal 0.167 0.132 0.205 0.95 mean qi
## 4 Gamble everything? SlowedDown 0.124 0.0935 0.157 0.95 mean qi
## 5 Proportion bet? Normal 0.421 0.397 0.445 0.95 mean qi
## 6 Proportion bet? SlowedDown 0.381 0.358 0.404 0.95 mean qi
For the zero-one inflated components, we can compare the model estimates with the data. Not unsurprisingly, they match quite well.
## # A tibble: 2 x 3
## exp_cond gamble_at_all gamble_everything
## * <fct> <dbl> <dbl>
## 1 Normal 0.806 0.166
## 2 Slowed down 0.811 0.123
The following is the main results figure on the level of condition.
We can also focus and look at the difference distributions.
## # A tibble: 3 x 8
## # Groups: parameter [3]
## parameter condition estimate .lower .upper .width .point .interval
## <fct> <fct> <dbl> <dbl> <dbl> <dbl> <chr> <chr>
## 1 Gamble at all? " " 0.00472 -0.0439 0.0536 0.95 mean qi
## 2 Gamble everything? " " -0.0434 -0.0921 0.00529 0.95 mean qi
## 3 Proportion bet? " " -0.0400 -0.0731 -0.00684 0.95 mean qi
Same as a figure.
The following plot shows all the difference distributions with overlayed density estimate (in black) and some possible prior distributions in colour (note again that the model did not actually include any priors). These priors are normal priors (who have a higher peak at 0 compared to Cauchy and t) with two different SDs.
Note that a prior with SD of .05 means that we expect with 95% probability that the largest effect we observe is 2.50% on the response scale.
The covariates do not differ between conditions (evidence for the null).
## Bayes factor analysis
## --------------
## [1] Intercept only : 12.59012 ±0.02%
##
## Against denominator:
## pgsi ~ exp_cond
## ---
## Bayes factor type: BFlinearModel, JZS
The following table shows mean and SDs of the covariates per group.
## # A tibble: 2 x 3
## exp_cond pgsi_mean pgsi_sd
## * <fct> <dbl> <dbl>
## 1 Normal 3.03 3.89
## 2 Slowed down 3.15 3.91
## Family: zoib2
## Links: mu = logit; phi = log; zipp = logit; coi = logit
## Formula: new_prop ~ exp_cond + pgsi_c
## phi ~ 1
## zipp ~ exp_cond + pgsi_c
## coi ~ exp_cond + pgsi_c
## Data: part2 (Number of observations: 1002)
## Samples: 4 chains, each with iter = 26000; warmup = 1000; thin = 1;
## total post-warmup samples = 1e+05
##
## Population-Level Effects:
## Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## Intercept -0.32 0.05 -0.42 -0.22 1.00 202255 76647
## phi_Intercept 1.28 0.05 1.19 1.38 1.00 199280 79155
## zipp_Intercept 1.45 0.11 1.23 1.68 1.00 197844 77180
## coi_Intercept -1.65 0.14 -1.92 -1.38 1.00 195737 78392
## exp_condSloweddown -0.17 0.07 -0.31 -0.03 1.00 203440 75284
## pgsi_c 0.02 0.01 0.01 0.04 1.00 200229 77371
## zipp_exp_condSloweddown 0.02 0.16 -0.29 0.34 1.00 194430 75775
## zipp_pgsi_c 0.06 0.02 0.02 0.11 1.00 189734 78791
## coi_exp_condSloweddown -0.38 0.20 -0.78 0.02 1.00 196127 76236
## coi_pgsi_c 0.08 0.02 0.03 0.12 1.00 183586 78854
##
## Samples were drawn using sampling(NUTS). For each parameter, Bulk_ESS
## and Tail_ESS are effective sample size measures, and Rhat is the potential
## scale reduction factor on split chains (at convergence, Rhat = 1).
As a visual convergence check, we plot the density and trace plots for the four intercept parameters representing the normal speed condition or the overall mean (for phi).
We can also plot the three parameters showing the difference distribution of the slowed down condition from the normal speed condition. These differences are given on the logit scale.
## # A tibble: 3 x 8
## # Groups: parameter [3]
## parameter condition estimate .lower .upper .width .point .interval
## <fct> <fct> <dbl> <dbl> <dbl> <dbl> <chr> <chr>
## 1 Gamble at all? " " 0.00368 -0.0449 0.0520 0.95 mean qi
## 2 Gamble everything? " " -0.0448 -0.0923 0.00229 0.95 mean qi
## 3 Proportion bet? " " -0.0412 -0.0739 -0.00793 0.95 mean qi
The figure below provides an alternative visualisation of the relationships between covariates and betting behaviour. In particular, participants were categorized into one of three experimental betting behavior groups: participants who did not bet at all (“none”, 14% of participants), participants who bet some of their money (68% of participants), and participants who bet “all” of their money (18%). For both gambling scales we see a positive relationship between the betting behavior group and the gambling score. Participants who bet more have on average higher scores on the two gambling scales.
##
## none some all
## 0.1916168 0.6916168 0.1167665
This is supported by Bayesian ANOVAs with Bayes factors of over 100 for the effect of betting behavior group on the PGSI scores. However, this effect was not moderated by gambling speed condition. In particular, there was evidence for the absence of both a main effect of gambling message condition and an interaction of gambling message condition with betting behaviour group for both gambling scale scores (Bayes factors for the null > 25).
## Bayes factor analysis
## --------------
## [1] exp_cond : 0.07942733 ±0.02%
## [2] gamble_cat : 146.7407 ±0.03%
## [3] exp_cond + gamble_cat : 12.79452 ±1.83%
## [4] exp_cond + gamble_cat + exp_cond:gamble_cat : 0.655612 ±2.75%
##
## Against denominator:
## Intercept only
## ---
## Bayes factor type: BFlinearModel, JZS
## denominator
## numerator exp_cond gamble_cat exp_cond + gamble_cat exp_cond + gamble_cat + exp_cond:gamble_cat
## gamble_cat 1847.483 1 11.46903 223.8224
## Family: zoib2
## Links: mu = logit; phi = log; zipp = logit; coi = logit
## Formula: new_prop ~ exp_cond * pgsi_c
## phi ~ 1
## zipp ~ exp_cond * pgsi_c
## coi ~ exp_cond * pgsi_c
## Data: part2 (Number of observations: 1002)
## Samples: 4 chains, each with iter = 26000; warmup = 1000; thin = 1;
## total post-warmup samples = 1e+05
##
## Population-Level Effects:
## Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## Intercept -0.32 0.05 -0.42 -0.22 1.00 143528 78188
## phi_Intercept 1.28 0.05 1.19 1.38 1.00 139972 78368
## zipp_Intercept 1.44 0.12 1.22 1.67 1.00 134911 76222
## coi_Intercept -1.64 0.14 -1.92 -1.38 1.00 154460 76195
## exp_condSloweddown -0.17 0.07 -0.31 -0.03 1.00 152425 76075
## pgsi_c 0.03 0.01 -0.00 0.05 1.00 93780 78211
## exp_condSloweddown:pgsi_c -0.01 0.02 -0.04 0.03 1.00 92641 79992
## zipp_exp_condSloweddown 0.05 0.16 -0.28 0.37 1.00 124973 78255
## zipp_pgsi_c 0.05 0.03 -0.01 0.12 1.00 95088 75259
## zipp_exp_condSloweddown:pgsi_c 0.04 0.05 -0.06 0.13 1.00 93369 73923
## coi_exp_condSloweddown -0.40 0.21 -0.81 0.01 1.00 129111 79579
## coi_pgsi_c 0.07 0.03 0.01 0.13 1.00 95090 74977
## coi_exp_condSloweddown:pgsi_c 0.02 0.04 -0.07 0.11 1.00 93523 77862
##
## Samples were drawn using sampling(NUTS). For each parameter, Bulk_ESS
## and Tail_ESS are effective sample size measures, and Rhat is the potential
## scale reduction factor on split chains (at convergence, Rhat = 1).
As a visual convergence check, we plot the density and trace plots for the four intercept parameters representing the normal speed condition or the overall mean (for phi).
We can also plot the three parameters showing the difference distribution of the slowed down condition from the normal speed condition. These differences are given on the logit scale.
## # A tibble: 3 x 8
## # Groups: parameter [3]
## parameter condition estimate .lower .upper .width .point .interval
## <fct> <fct> <dbl> <dbl> <dbl> <dbl> <chr> <chr>
## 1 Gamble at all? " " 0.00687 -0.0425 0.0563 0.95 mean qi
## 2 Gamble everything? " " -0.0470 -0.0956 0.00154 0.95 mean qi
## 3 Proportion bet? " " -0.0412 -0.0742 -0.00818 0.95 mean qi
Do either of the spin speeds affect the riskiness of bets chosen in the roulette? Different bets come with different potential payoffs in roulette. If £1 is bet, then this can provide a total payoff of between £2 (e.g., bets on red or black) and £36 (bets on a single number). These numbers, 2 and 36, are the decimal odds for these two bets, representing the total potential payoff Additionally, gamblers can place multiple bets per spin, (e.g., betting £0.50 on red and £0.50 on 7). Since the number 7 is a red colour, the bet on 7 can only win if the first bet on red also wins. Multiple bets per spin can either be placed in a way that accentuates risk, as in this example, or in a way that hedges risk (for example, a bet on black added to the bet on 7, or betting on reds and blacks together). The purpose of this exploratory analysis is to see if either warning label affects risk taking.
Following our pre-registration we have measures the amount of risk taken by looking at the variance of the decimal odds for each number in the roulette table. It will measure the concentration of the bet, with more risk represented by more concentrated bets (e.g., betting on a single number), and lower risk represented by more spread bets (e.g., betting on reds, betting on evens). For example, if a participant places a bet on number 7, the decimal odds for that number is 36 (36 times the amount bet if the roulette stops on the number 7). If a participant places a bet on red, then every red number on the table gets a decimal odd of 2 (the participant will win twice the amount bet if the roulette stops on any red number). In order to calculate the proposed risk variable, we will also assign decimal odds of zero for the numbers in which participants did not bet (since they win zero times the amount bet if the roulette stops on those numbers). In the two examples above, every number except 7 will be assigned zero, and every non-red number will be assigned zero, respectively. The risk variable will be the variance of the array of decimal odds for every number on the roulette table, taking into account the bets the participant has placed, and including zeroes for non-winning numbers. The value of this risk variable can range between 0.03 and 35.03. The value cannot be zero in our task because participants are not able to bet the same amount across all numbers including the zero due to the limitations in the values of the available tokens and total bet amounts. Higher numbers indicate more risk taking (with the highest, 35.03, associated with concentrating the bet on a single number). Lower numbers indicate lower risk taking (with the lowest, 0.03, associated with spreading the bet across every red and black number, excluding zero).
The following plot shows the distribution of this variable after aggregating within participants. The left plot shows the original variable on the scale from 0.03 to 35.03. The middle plot shows the variable after dividing by 36 so that the variable ranges from just above 0 to just below 1. The right plot shows the variable after subtracting 0.03 and dividing by 35 so that the smallest value is mapped to 0 and the largest value is mapped to 1.
We first analyse the data with a beta-regression model. For this, the data needs to be between 0 and 1, but exclude exactly 0 and 1. Consequently, we use the transformation shown above in the middle panel. As before, we fit the data and allow for an effect of gambling message.
The model does not show any obvious problems. In addition, we can see that the 95%-CIs for the slowed down effect includes 0.
## Family: beta
## Links: mu = logit; phi = log
## Formula: average_odds2 ~ exp_cond
## phi ~ 1
## Data: bets_av (Number of observations: 810)
## Samples: 4 chains, each with iter = 2000; warmup = 1000; thin = 1;
## total post-warmup samples = 4000
##
## Population-Level Effects:
## Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## Intercept -2.06 0.06 -2.17 -1.95 1.00 2631 2563
## phi_Intercept 1.59 0.06 1.48 1.69 1.00 2497 2575
## exp_condSloweddown -0.04 0.07 -0.18 0.10 1.00 2914 2692
##
## Samples were drawn using sampling(NUTS). For each parameter, Bulk_ESS
## and Tail_ESS are effective sample size measures, and Rhat is the potential
## scale reduction factor on split chains (at convergence, Rhat = 1).
The posterior predictive distribution shows some problems, but at least the shape of the synthetic data is similar to the distribution of the actual data (posterior predictive distributions of a model assuming a Gaussian response distribution was considerably worse and is therefore not included here).
The following tables show the average riskiness per condition and differences from the no warning message group on the fitted scale, i.e., the (0, 1) scale used for the beta regression.
## # A tibble: 2 x 7
## condition estimate .lower .upper .width .point .interval
## <chr> <dbl> <dbl> <dbl> <dbl> <chr> <chr>
## 1 Normal 0.113 0.102 0.125 0.95 mean qi
## 2 SlowedDown 0.110 0.0992 0.121 0.95 mean qi
## # A tibble: 1 x 7
## condition estimate .lower .upper .width .point .interval
## <fct> <dbl> <dbl> <dbl> <dbl> <chr> <chr>
## 1 SlowedDown - Normal -0.00388 -0.0180 0.0102 0.95 mean qi
## R version 4.0.3 (2020-10-10)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.5 LTS
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
##
## locale:
## [1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C LC_TIME=en_GB.UTF-8
## [4] LC_COLLATE=en_GB.UTF-8 LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8
## [7] LC_PAPER=en_GB.UTF-8 LC_NAME=C LC_ADDRESS=C
## [10] LC_TELEPHONE=C LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] binom_1.1-1 BayesFactor_0.9.12-4.2 Matrix_1.3-2 coda_0.19-4
## [5] tidybayes_2.3.1 brms_2.14.4 Rcpp_1.0.6 forcats_0.5.1
## [9] stringr_1.4.0 dplyr_1.0.4 purrr_0.3.4 readr_1.4.0
## [13] tidyr_1.1.2 tibble_3.1.0 ggplot2_3.3.3 tidyverse_1.3.0
##
## loaded via a namespace (and not attached):
## [1] readxl_1.3.1 backports_1.2.1 plyr_1.8.6 igraph_1.2.6
## [5] splines_4.0.3 svUnit_1.0.3 crosstalk_1.1.1 rstantools_2.1.1
## [9] inline_0.3.17 digest_0.6.27 htmltools_0.5.1.1 rsconnect_0.8.16
## [13] fansi_0.4.2 magrittr_2.0.1 modelr_0.1.8 RcppParallel_5.0.3
## [17] matrixStats_0.58.0 xts_0.12.1 prettyunits_1.1.1 colorspace_2.0-0
## [21] rvest_0.3.6 ggdist_2.4.0 haven_2.3.1 xfun_0.21
## [25] callr_3.5.1 crayon_1.4.1 jsonlite_1.7.2 lme4_1.1-26
## [29] zoo_1.8-8 glue_1.4.2 gtable_0.3.0 MatrixModels_0.4-1
## [33] V8_3.4.0 distributional_0.2.2 pkgbuild_1.2.0 rstan_2.21.2
## [37] abind_1.4-5 scales_1.1.1 mvtnorm_1.1-1 DBI_1.1.1
## [41] miniUI_0.1.1.1 xtable_1.8-4 stats4_4.0.3 StanHeaders_2.21.0-7
## [45] DT_0.17 htmlwidgets_1.5.3 httr_1.4.2 threejs_0.3.3
## [49] arrayhelpers_1.1-0 ellipsis_0.3.1 pkgconfig_2.0.3 loo_2.4.1
## [53] farver_2.0.3 sass_0.3.1 dbplyr_2.1.0 utf8_1.1.4
## [57] labeling_0.4.2 tidyselect_1.1.0 rlang_0.4.10 reshape2_1.4.4
## [61] later_1.1.0.1 munsell_0.5.0 cellranger_1.1.0 tools_4.0.3
## [65] cli_2.3.1 generics_0.1.0 broom_0.7.5 ggridges_0.5.3
## [69] evaluate_0.14 fastmap_1.1.0 yaml_2.2.1 processx_3.4.5
## [73] knitr_1.31 fs_1.5.0 pbapply_1.4-3 nlme_3.1-152
## [77] mime_0.10 projpred_2.0.2 xml2_1.3.2 compiler_4.0.3
## [81] bayesplot_1.8.0 shinythemes_1.2.0 rstudioapi_0.13 gamm4_0.2-6
## [85] curl_4.3 reprex_1.0.0 statmod_1.4.35 bslib_0.2.4
## [89] stringi_1.5.3 highr_0.8 ps_1.5.0 Brobdingnag_1.2-6
## [93] lattice_0.20-41 nloptr_1.2.2.2 markdown_1.1 shinyjs_2.0.0
## [97] vctrs_0.3.6 pillar_1.5.0 lifecycle_1.0.0 jquerylib_0.1.3
## [101] bridgesampling_1.0-0 cowplot_1.1.1 httpuv_1.5.5 R6_2.5.0
## [105] promises_1.2.0.1 gridExtra_2.3 codetools_0.2-18 boot_1.3-27
## [109] colourpicker_1.1.0 MASS_7.3-53.1 gtools_3.8.2 assertthat_0.2.1
## [113] withr_2.4.1 shinystan_2.5.0 mgcv_1.8-34 parallel_4.0.3
## [117] hms_1.0.0 grid_4.0.3 minqa_1.2.4 rmarkdown_2.7
## [121] shiny_1.6.0 lubridate_1.7.9.2 base64enc_0.1-3 dygraphs_1.1.1.6